import { Mt, MtEntity, revert_mt } from '../mt'
export type PollPlanResponseEntity = Array<{
	name: string
	id: string
}>
export interface PollEntity {
	/**id*/
	id: string
	/**
       {t('轮询模式 1，6，8是不带音频，3，7，9带音频，管理方：10不带，11带')}
    1-{t('视频轮询  是否带音频不勾选')};
    3-{t('音视频轮询 是否带音频勾选')};
    6-{t('轮询视频：只给回传通道 是否带音频不勾选')};
    7-{t('轮询发言人：只给回传通道 是否带音频勾选')};
    8-{t('轮询视频：给回传通道和本地广播 是否带音频不勾选')};
    9-{t('轮询发言人：给回传通道和本地广播 是否带音频勾选')};
    10-{t('主席视频轮询 会议轮询是否是轮询到发言人 不勾选')};
    11-{t('主席音视频轮询; 会议轮询是否是轮询到发言人 勾选')}
       */
	mode: number
	/** 预案名称 */
	name: string
	/** 轮询间隔时间(秒) */
	keep_time: number
	/** 轮询次数，0无限次轮询 */
	num: number
	/** 轮询成员列表 */
	members: MtEntity[]
	/** 当前轮询到的超元 */
	cur_poll_mt?: MtEntity
	/**轮询到的终端的位置*/
	poll_index?: number
	/**轮询状态0 空闲 1轮询中 2暂停*/
	state?: 0 | 1 | 2
}
export class Poll {
	id: string
	mode: number
	name: string
	keep_time: number
	num: number
	members: Mt[]
	cur_poll_mt?: Mt
	poll_index?: number
	state?: 0 | 1 | 2
	constructor(poll: PollEntity) {
		this.id = poll.id ?? ''
		this.mode = poll.mode ?? 1
		this.name = poll.name ?? ''
		this.poll_index = poll.poll_index
		this.state = poll.state
		this.keep_time = poll.keep_time ?? 30
		this.num = poll.num ?? 0
		this.cur_poll_mt = poll.cur_poll_mt ? new Mt(poll.cur_poll_mt) : undefined
		this.members = poll.members.map((item) => new Mt(item))
	}
}
export function revert_poll(poll: Poll): PollEntity {
	return {
		id: poll.id,
		mode: poll.mode,
		name: poll.name,
		keep_time: poll.keep_time,
		poll_index: poll.poll_index,
		num: poll.num,
		state: poll.state,
		cur_poll_mt: poll.cur_poll_mt ? revert_mt(poll.cur_poll_mt) : undefined,
		members: poll.members.map((item) => revert_mt(item)),
	}
}
